package com.yn.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yn.common.model.user.User;
import com.yn.common.model.zy.CarDeparturePlanDO;
import com.yn.common.page.BasePage;
import com.yn.common.request.driver.DeparturePlanRequest;
import com.yn.common.request.driver.ReturnPlanModifyRequest;
import com.yn.common.request.sc.PageParamRequest;
import com.yn.common.request.zy.ReturnPlanQuery;
import com.yn.common.response.driver.DepartureDetailResponse;
import com.yn.common.response.driver.DeparturePlanResponse;


/**
 * <p>
 * 司机返程计划表 服务类
 * </p>
 *
 * @author xuquanjun
 * @since 2025-07-02
 */
public interface ICarDeparturePlanService extends IService<CarDeparturePlanDO> {

    /**
     *  司机发布返程车计划
     * @param request 发车计划请求对象
     * @return 发车计划id
     */
    Integer DriverPublishOrder(DeparturePlanRequest request);


    /**
     * 司机查看自己发布返程车列表
     * @param query 查询参数
     * @param pageRequest 分页参数
     * @param user 用户信息
     * @return 返回分页数据
     */
    BasePage<DeparturePlanResponse> orderList(ReturnPlanQuery query, PageParamRequest pageRequest,User user);


    /**
     * 司机端删除返程订单
     * @param id 主键
     */
    void deleteById(Integer id);


    /**
     * 司机端更新返程订单
     * @param request 司机返程计划修改请求对象
     * @param userId 用户id
     */
    void updateReturnPlan(ReturnPlanModifyRequest request, Integer userId);

    /**
     * 查询发车计划详情
     * @param id 主键
     * @param user  用户信息
     * @return 发车计划详情
     */
    DepartureDetailResponse OrderDetail(Integer id, User user);
}
